home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / GIMP 2.6.8 / gimp-2.6.8-i686-setup.exe / {app} / share / gimp / 2.0 / scripts / frosty-logo.scm < prev    next >
Text File  |  2009-12-15  |  7KB  |  203 lines

  1. ;  FROZEN-TEXT effect
  2. ;  Thanks to Ed Mackey for this one
  3. ;  Written by Spencer Kimball
  4.  
  5. (define (apply-frosty-logo-effect img
  6.                                   logo-layer
  7.                                   size
  8.                                   bg-color
  9.                                   isnew) ; The parameter isnew is used
  10.                                          ; when the script is called
  11.                                          ; using the logo script (not
  12.                                          ; alpha to logo), in order to
  13.                                          ; make sure some actions are
  14.                                          ; performed only then
  15.   (let* (
  16.         (border (/ size 5))
  17.         (width (+ (car (gimp-drawable-width logo-layer)) border))
  18.         (height (+ (car (gimp-drawable-height logo-layer)) border))
  19.         (logo-layer-mask (car (gimp-layer-create-mask logo-layer
  20.                               ADD-BLACK-MASK)))
  21.         (sparkle-layer (car (gimp-layer-new img width height RGBA-IMAGE
  22.                                             "Sparkle" 100 NORMAL-MODE)))
  23.         (matte-layer (car (gimp-layer-new img width height RGBA-IMAGE
  24.                                           "Matte" 100 NORMAL-MODE)))
  25.         (shadow-layer (car (gimp-layer-new img
  26.                        (+ border width)
  27.                        (+ border height)
  28.                        RGBA-IMAGE
  29.                                            "Shadow" 90 MULTIPLY-MODE)))
  30.         (bg-layer (car (gimp-layer-new img width height RGB-IMAGE
  31.                                        "Background" 100 NORMAL-MODE)))
  32.         (selection 0)
  33.         (stack (car(gimp-image-get-layer-position img logo-layer)))
  34.         )
  35.  
  36.     (gimp-context-push)
  37.  
  38.     (if ( = isnew 1) (script-fu-util-image-resize-from-layer img shadow-layer))
  39.  
  40.     (gimp-layer-add-mask logo-layer logo-layer-mask)
  41.     (gimp-image-add-layer img sparkle-layer (+ 1 stack))
  42.     (gimp-image-add-layer img matte-layer (+ 2 stack))
  43.     (gimp-image-add-layer img shadow-layer (+ 3 stack))
  44.     (gimp-layer-translate shadow-layer (- border) (- border))
  45.     (gimp-image-add-layer img bg-layer 5)
  46.     (gimp-selection-none img)
  47.     (gimp-edit-clear sparkle-layer)
  48.     (gimp-edit-clear matte-layer)
  49.     (gimp-edit-clear shadow-layer)
  50.     (gimp-selection-layer-alpha logo-layer)
  51.     (set! selection (car (gimp-selection-save img)))
  52.     (gimp-selection-feather img border)
  53.     (gimp-context-set-background '(0 0 0))
  54.     (gimp-edit-fill sparkle-layer BACKGROUND-FILL)
  55.     (plug-in-noisify RUN-NONINTERACTIVE img sparkle-layer FALSE 0.2 0.2 0.2 0.0)
  56.     (plug-in-c-astretch RUN-NONINTERACTIVE img sparkle-layer)
  57.     (gimp-selection-none img)
  58.     (plug-in-sparkle RUN-NONINTERACTIVE img sparkle-layer 0.03 0.5
  59.                      (/ (min width height) 2)
  60.                      6 15 1.0 0.0 0.0 0.0 FALSE FALSE FALSE 0)
  61.     (gimp-levels sparkle-layer 1 0 255 0.2 0 255)
  62.     (gimp-levels sparkle-layer 2 0 255 0.7 0 255)
  63.     (gimp-selection-layer-alpha sparkle-layer)
  64.     (gimp-context-set-foreground '(0 0 0))
  65.     (gimp-context-set-brush "Circle Fuzzy (11)")
  66.     (gimp-edit-stroke matte-layer)
  67.     (gimp-selection-feather img border)
  68.     (gimp-edit-fill shadow-layer BACKGROUND-FILL)
  69.     (gimp-selection-none img)
  70.     (gimp-context-set-background bg-color)
  71.     (gimp-edit-fill bg-layer BACKGROUND-FILL)
  72.     (gimp-context-set-background '(0 0 0))
  73.     (gimp-edit-fill logo-layer BACKGROUND-FILL)
  74.     (gimp-selection-load selection)
  75.     (gimp-context-set-background '(255 255 255))
  76.     (gimp-edit-fill logo-layer-mask BACKGROUND-FILL)
  77.     (gimp-selection-feather img border)
  78.     (gimp-selection-translate img (/ border 2) (/ border 2))
  79.     (gimp-edit-fill logo-layer BACKGROUND-FILL)
  80.     (gimp-layer-remove-mask logo-layer 0)
  81.     (gimp-selection-load selection)
  82.     (gimp-context-set-brush "Circle Fuzzy (07)")
  83.     (gimp-context-set-paint-mode BEHIND-MODE)
  84.     (gimp-context-set-foreground '(186 241 255))
  85.     (gimp-edit-stroke logo-layer)
  86.     (gimp-selection-none img)
  87.     (gimp-image-remove-channel img selection)
  88.  
  89.     (gimp-layer-translate shadow-layer border border)
  90.  
  91.     (if ( = isnew 1) (script-fu-util-image-resize-from-layer img logo-layer))
  92.  
  93.     (gimp-layer-translate bg-layer (- 0 border) (- 0 border))
  94.  
  95.     (gimp-context-pop)
  96.   )
  97. )
  98.  
  99. (define (script-fu-frosty-logo-alpha img
  100.                                      logo-layer
  101.                                      size
  102.                                      bg-color)
  103.  
  104.     (gimp-image-undo-group-start img)
  105.  
  106.     ;Checking if the effect size is to big or not
  107.     (gimp-selection-layer-alpha logo-layer)
  108.     (gimp-selection-feather img (/ size 5))
  109.     (gimp-selection-sharpen img)
  110.  
  111.     (if (= 1 (car(gimp-selection-is-empty img)))
  112.     (begin
  113.       (gimp-image-undo-group-end img)
  114.       (gimp-selection-none img)
  115.       (gimp-message "Your layer's opaque parts are either too small for
  116. this effect size, or they are not inside the canvas.")
  117.       ))
  118.  
  119.     (if (= 0 (car(gimp-selection-is-empty img)))
  120.     (begin
  121.       (gimp-selection-none img)
  122.       (gimp-layer-resize-to-image-size logo-layer)
  123.       (apply-frosty-logo-effect img logo-layer size bg-color 0)
  124.  
  125.       (gimp-selection-none img)
  126.       (gimp-image-undo-group-end img)
  127.       (gimp-displays-flush)
  128.       ))
  129. )
  130.  
  131. (script-fu-register "script-fu-frosty-logo-alpha"
  132.   _"_Frosty..."
  133.   _"Add a frost effect to the selected region (or alpha) with an added drop shadow"
  134.   "Spencer Kimball & Ed Mackey"
  135.   "Spencer Kimball & Ed Mackey"
  136.   "1997"
  137.   "RGBA"
  138.   SF-IMAGE      "Image"                 0
  139.   SF-DRAWABLE   "Drawable"              0
  140.   SF-ADJUSTMENT _"Effect size (pixels)" '(100 2 1000 1 10 0 1)
  141.   SF-COLOR      _"Background color"     "white"
  142. )
  143.  
  144. (script-fu-menu-register "script-fu-frosty-logo-alpha"
  145.                          "<Image>/Filters/Alpha to Logo")
  146.  
  147.  
  148. (define (script-fu-frosty-logo text
  149.                                size
  150.                                font
  151.                                bg-color)
  152.   (let* (
  153.         (img (car (gimp-image-new 256 256 RGB)))
  154.         (border (/ size 5))
  155.         (text-layer (car (gimp-text-fontname img -1 0 0 text (* border 2) TRUE size PIXELS font)))
  156.         (error-string "The text you entered contains only spaces.")
  157.     )
  158.      (if (= text-layer -1)  ; checking that the text layer was created
  159.                 ; succesfully - it has more then just
  160.                 ; empty charcters
  161.      (begin
  162.        (gimp-image-delete img)
  163.        (gimp-message error-string)
  164.        )
  165.      (begin     ; Checking if the effect size is too big or not
  166.        (gimp-image-undo-disable img)
  167.        (gimp-selection-layer-alpha text-layer)
  168.        (gimp-selection-feather img border)
  169.        (gimp-selection-sharpen img)
  170.  
  171.        (if (= 0 (car(gimp-selection-is-empty img))) ; Checking whether
  172.                                     ; the effect size
  173.                                 ; is too big
  174.            (begin
  175.          (apply-frosty-logo-effect img text-layer size bg-color 1)
  176.          (gimp-selection-all img)
  177.          (gimp-image-undo-enable img)
  178.          (gimp-display-new img)
  179.          ))
  180.        (if (= 1 (car(gimp-selection-is-empty img)))
  181.            (begin
  182.          (gimp-image-delete img)
  183.          (gimp-message error-string)
  184.          ))))
  185.      )
  186. )
  187.  
  188. (script-fu-register "script-fu-frosty-logo"
  189.   _"_Frosty..."
  190.   _"Create frozen logo with an added drop shadow"
  191.   "Spencer Kimball & Ed Mackey"
  192.   "Spencer Kimball & Ed Mackey"
  193.   "1997"
  194.   ""
  195.   SF-STRING     _"Text"                "GIMP"
  196.   SF-ADJUSTMENT _"Font size (pixels)"  '(100 2 1000 1 10 0 1)
  197.   SF-FONT       _"Font"                "Becker"
  198.   SF-COLOR      _"Background color"    "white"
  199. )
  200.  
  201. (script-fu-menu-register "script-fu-frosty-logo"
  202.                          "<Image>/File/Create/Logos")
  203.